package com.orifine.sql.simple;

import java.util.ArrayList;
import java.util.List;

public class SimplePageBar {
	private List<Integer> pages;
	private Integer page;
	private Integer pageCount;
	private Integer size;
	private Integer minPage;
	private Integer maxPage;
	
	public SimplePageBar(Integer page, Integer pageCount, Integer size){
		this.page = page;
		this.pageCount = pageCount;
		this.size = size;
		this.minPage = page - (int)Math.round(size/2.0) + 1;
		this.maxPage = page + size/2;
		if(minPage < 1){
			maxPage += 1 - minPage;
			minPage = 1;
		}
		if(maxPage > pageCount){
			minPage -= maxPage - pageCount;
			maxPage = pageCount;
		}
		pages = new ArrayList<Integer>();
		if(size >= pageCount || minPage <= 1){
			for(int i = 0; i < size && i < pageCount; i++){
				pages.add(i+1);
			}
		} else {
			for(int i = minPage; i < minPage + size; i++){
				pages.add(i);
			}
		}
		if(minPage < 1){
			minPage = 1;
		}
	}
	
	public List<Integer> getPages(){
		return pages;
	}
	
	/**
	 * 判断能否移前
	 */
	public Boolean getHasPrevPage(){
		return minPage != 1;
	}
	
	/**
	 * 判断能否移后
	 */
	public Boolean getHasNextPage(){
		return maxPage != pageCount;
	}
	
	/**
	 * 获取上一页
	 */
	public Integer getPrevPage(){
		if(minPage - 1 < 1){
			return 1;
		} else {
			return page - 1;
		}
	}
	
	/**
	 * 获取第一页
	 */
	public Integer getFirstPage(){
		return 1;
	}
	
	/**
	 * 获取下一页
	 */
	public Integer getNextPage(){
		if(maxPage + 1 > pageCount){
			return pageCount;
		} else {
			return page + 1;
		}
	}
	
	/**
	 * 获取最后一页
	 */
	public Integer getLastPage(){
		return pageCount;
	}
	
	/**
	 * 获取当前页
	 */
	public Integer getPage() {
		return page;
	}
	public void setPage(Integer page) {
		this.page = page;
	}
	public Integer getPageCount() {
		return pageCount;
	}
	public void setPageCount(Integer pageCount) {
		this.pageCount = pageCount;
	}
}
